■ 各種操作 & 処理 | |
■ DOS窓(コンソール)に ”Hellow World !!” と表示する ■ 例外処理(try throw catch )をおこなう ■ フォームをもうひとつ開く |
|
|
|
■ DOS窓(コンソール)に ”Hellow World !!” と表示する | |
@ [ファイル}→[新規作成]→[その他] で 新規作成ダイアログがあらわれます。 この新規作成ダイアログの ”新規作成タブ”を選択します。 A ”コンソールウィザート”のアイコンをクリックするとあらわれる”コンソールウィザート”ダイアログ内のC++ と コンソールアプリケーションの項ににチェックをつけOKをクリックします。 B コードエディタがあらわれます。 C プリプロセッサに #include <stdio.h> と #include<conio.h>を 記載します。 D メインの中に printf("Hellow World !!") と getch() を 記載します。 注: getch()は コンソール画面を静止させて見るために挿入しています。 |
|
<プログラム例> #include <stdio.h> #include <conio.h> int main() { printf("Hellow World !!"); getch(); return 0; } |
|
|
|
■ 例外処理(try throw catch )をおこなう | |
処理不能な入力が入る可能性がある関数には例外処理の制御をおこなっておく必要があります。 C++には以下の例外処理構文が用意されています。ユーザにキーボードから入力してもらう場合などは必須です。 数字を期待しているのに英文字を入力されたり場合によっては制御文字まで入力されることがあります。 try { //処理不能な入力が入る可能性がある関数 // エラー発生 → throw( ERROR ) …… ERRORの型によって例外処理1、例外処理2、…に分岐 } catch( ) { //例外処理1 } catch( ) { //例外処理2 } …… catch(...) //任意のエラーを受け取る { //例外処理3 } (注1) BCBの場合 catch (EConvertError &e) と書くと引数からエラー情報が得られます (注2) 例外処理のcatch 部分のプログラムは、以下のようにBCBのデバッガオプションの設定を変更しない と動作しません。 @メニューの[ツール]→[デバッガオプション]をクリックして[デバッガオプション]のダイアログを表示 させます。 A[一般]のタグを選択し、そのなかの ”統合環境をつかう” のチェックボックスのチェックをはずす デフォルトでは このチェックがはいっています。 尚、チェックがはいった状態でコンパイルした実行ファイルでも、BCBでの統合環境外の環境で あればcatch(){ …… }の部分もプログラムどうり動作します。 <プログラム例> 以下は、例外処理をつかった、Memo1とMemo2に整数を入力して Button1をクリックすると Memo3に合計が表示 されるプログラムです。 整数以外の値が入力されるとcatch(EConvertError &e){ …… }の部分が実行されます。 |
|
void __fastcall TForm1::Button1Click(TObject *Sender) { try{ Memo3->Text=IntToStr(StrToInt(Memo1->Text) + StrToInt(Memo2->Text)); } catch (EConvertError &e) { Application->MessageBox("整数ではない値が入力されました。再入力願います","お知らせ",MB_OKCANCEL); return; } } |
|
|
|
■ フォームをもうひとつ開く | |
[ファイル]→[フォームの新規作成] で2番目のフォームForm2 を作成します。 1番目のフォームForm1にボタンButton1を 配置してイベントにForm2->Show(); を記載します。 そして Form1の 実装ファイルUnit1.cpp のプリプロセッサに Form2のヘッダーファイルUnit2.hを インクルードします。 <追記> ・ フォームを閉じるときは Form2->Close() です。 ・ フォームをモード付で開く時は、Form2->ShowModal() です。 モード付でForm2を開くとForm2を閉じる まで Form1は操作できません。 |
|
<プログラム例> #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->Show(); } |
|